RA    -*- mode: org; -*-

help: [C-uc .] insert timestamp [C-cc] flip checkbox [C-uucc] partial flip checkbox [C-ct] flip TODO

#+STARTUP: logdone

* TODO Everything [1/6]
  - [ ] Bugs [0/6]
    - [ ] ra::Small<real, 3, 3, 3>() benchmark in bench-dot.C has op 10x worse than indexed.
    - [ ] size_s, rank_s in Ryn:: are broken [ra07]
    - [ ] ambiguity / bad init in nested constructors [ra45]
    - [ ] subscripting inconsistencies; for example, if `A` is rank>1 and `i` is rank 1, then `A(i)` will return a nested expression instead of preserving `A`'s rank.
    - [ ] beatable subscripts are not beaten if mixed with non-beatable subscripts. E.g. in A(vector, iota, vector) the iota isn't beaten.
    - [ ] be namespace clean except for possibly real.H, complex.H.
  - [ ] Features [0/4]
    - [ ] Should be able to reshape iota (??) or show examples with TensorIndex,
      maybe. One idea is to generalize View (so View<Iota>, etc.) which is
      something that newra does. But as long as Container is parent of View,
      conversion of (Container const &) into (View const &) forces us to have
      const/nonconst overloads in View (instead of just relying on the constness
      of (View::p). This is just a mess when View::p isn't a pointer.
      - [ ] Fix relationship between Container and View [0/5]
        - [ ] forward const/nonconst overloads to View or ViewConst from here.
        - [ ] remove inheritance relationship of Container on View
        - [ ] add const/nonconst casts of Container to View or ViewConst
        - [ ] remove const overloads from View::operator()
        - [ ] make View be View<pointer> and not View<value_type>
    - [ ] Should be able to turn ravel iterators (e.g. View::begin()) into array iterators. Ptr()
      doesn't work for that. Or to obtain STLIterator from any array iterator. That may come of
      merging STLIterator with ply_index/ply_ravel.
    - [ ] gemv(conj(a), b) should work. Beat View-like selectors down an Expr??
    - [ ] port some of the View ops to generic ArrayIterator. reverse, transpose, etc. seem easy
      enough. Only it kind of bothers me that they need their own Expr-like types while on Views
      it's just a one time op. Propagating ops down Expr into leaf Views (a kind of beating) would
      be better.
  - [X] Error report, debugging [3/3]
    - [X] Optionally throw instead of abort on bounds checks, etc. cf. test/check-runtime.C
      * This was fixed between v8 and v10, see examples/throw.C.
    - [X] Static check on Small constructors e.g. real3 {1, 2, 3}. Cf big.H:513 init<SS>(SS const & s).
      - [X] for Container constructors
      - [X] for Small constructors
    - [X] General static check on prefix matching <2019-02-06 Wed 12:06>
  - [-] Building, tests [3/5]
    - [X] Build docs with cmake
    - [X] Support RA_USE_BLAS with cmake (linux)
    - [X] Support RA_USE_BLAS with cmake (mac) <2018-12-07 Fri 16:33>
    - [ ] Make cmake tests respect dependences and able to be run independently.
    - [ ] Test for expected compilation errors (static_assert, etc) [ra42].
  - [ ] Documentation [0/3]
    - [ ] Complete section on internals
    - [ ] Complete section on other languages, libraries
    - [ ] Describe xreferenced issues in doc ([raxx], etc.)
  - [ ] Other [0/1]
    - [ ] Support tuple as a kind of foreign vector
      - [ ] Iterator type for tuple (like Vector for std::vector).
      - [ ] Appropriate ply. Possibly restrict it to rank 1.
